package animal;

//abstract:抽象类,不允许实例化,只能被继承,可以通过向上转型,指向子类实例
/*
应用场景:
    某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法
使用规则:
    包含抽象方法的类一定是抽象类
    抽象类可以没有抽象方法
 */
public abstract class Animal {
    //属性:昵称 年龄
    private String name;
    private int age;
    //无参构造
    public Animal(){

    }
    //带参构造
    public Animal(String name,int age){
        this.setName(name);
        this.setAge(age);

    }

    //get/set方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    //方法:吃东西
    //抽象方法:要求该方法不能有方法体
    //同时要求子类必须重写该方法
    //static final private不能与abstract并存
    public abstract String eat();

    public static String say(){
        String str="动物之间打招呼";
        return str;
    }
}
